package 链表;

import common.ListNode;

import java.util.PriorityQueue;

/**
 * @author tmh
 * @date 2024/11/23 20:18
 * @description
 */
public class T23合并K个升序链表 {
    public ListNode mergeKLists(ListNode[] lists) {

        //使用优先级队列
        PriorityQueue<ListNode> queue = new PriorityQueue<>(((o1, o2) -> o1.val-o2.val));
        for (ListNode list : lists) {
            if (list!=null){
                queue.offer(list);
            }

        }
        //进行合并升序
        ListNode dummyHead = new ListNode();
        ListNode tail = dummyHead;
        //使用tail来链接元素
        while (!queue.isEmpty()){
            ListNode node = queue.poll();
            tail.next=node;
            tail=node;
            if (node.next!=null){
                queue.offer(node.next);
            }
        }
        return dummyHead.next;
    }
}
